package Java中的集合.ArrayListMethod;

import java.util.ArrayList;
import java.util.List;

/**
 * @Auther:云尚学Java
 */
//利用remove(index);根据指定的索引删除该索引位置的元素
public class RemoveIndexElementTest {
    public static void main(String[] args) {
        /**
         * 父类集合接口<数据类型> 集合名称=new 父类集合接口的实现类<数据类型>()
         * 按照集合的声明格式，去声明集合
         */
        List<Integer> list=new ArrayList<Integer>();
        /**
         * 利用add()向集合中新增一个元素
         * 每调用一次就代表新增一个元素
         */
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        for (Integer integer : list) {
            System.out.println(integer);
        }
        System.out.println("=====");
        /**
         * 4.remove(index),根据索引删除指定位置的元素
         */
        //list.remove(1);//删除1索引所对应的元素2
        //int num=list.get(1);//再去重新获取1索引对应的元素
        //System.out.println("num:"+num);//2
        /**
         * 重新遍历元素
         */
        //for (Integer integer : list) {
        //    System.out.println(integer);  //1 3 4 5
        //}
        /**
         * 删除元素时怎么才能避免发生移动呢？因为移动元素的现象如果不能避免，当删除集合中重复行性元素时，会漏掉元素的。
         * 比如说集合中现在元素编程 1 2 2 4 5
         * 删除集合中2这个元素该怎么办呢？
         *
         * 如果按照原有的方式删除 2个这个元素只能删除一个，会漏删除一个的，结果为：
         * num:2
         1
         2
         4
         5
         从后向前依次删除，先删除后面的元素，由于前面的元素没有删除呢，所以是无法移动的，所以说从后向前删除，不会出现元素移动的现象
         从后向前依次删除，先删除后面的元素，由于前面的元素没有删除呢，所以是无法移动的，所以说从后向前删除，不会出现元素移动的现象
         从：前-后 删除 0-4   所以从0开始	i++
         从：后-前 删除 4-0   所以从4开始	i--

         从后向前删除重复性元素，演示元素是否漏掉
         从：后-前 删除 4-0   所以从4开始	i--
         确实可以删除掉重复性元素，没有漏掉。说明从后向前删除元素 ，可避免这种所谓的元素的移动
         */

        /**
         * 5.从后往前删除重复性元素，演示不漏掉元素
         */
        System.out.println("从后往前删除：");
        for(int i=list.size()-1;i>=0;i--){
            if(list.get(i)==2){
                list.remove(i);
            }
        }
        /**
         * 重新遍历元素看重复性元素是否都被删除
         */
        for(int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }
    }

}
